<?php

/**
 * compras actions.
 *
 * @package    dirsac
 * @subpackage compras
 * @author     Miguel Flores
 * @version    SVN: $Id: actions.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
 */
class comprasActions extends autocomprasActions
{
	
  public function executePendiente(sfWebRequest $request)
  {
    $this->compra_internacional_list = Doctrine::getTable('CompraInternacional')
      ->createQuery('a')
      ->where('a.estado = ?', 'Pendiente')
      ->execute();
      
   $this->filter = new CompraInternacionalFormFilter();
   $this->setTemplate('index');
  }
  
  public function executeIndex(sfWebRequest $request)
  {
    //$this->compra_internacional_list = Doctrine::getTable('CompraInternacional')->findAll();
    $this->compra_internacional_list = Doctrine::getTable('CompraInternacional')
    	->createQuery('c')
    	->orderBy('c.per DESC')
    	->execute();
      
   $this->filter = new CompraInternacionalFormFilter();
   $this->setTemplate('index');
  }
  
	public function executeFilter(sfWebRequest $request)
	{
		//$filter_values = $request->getParameter('compra_filters');
		//$this->filter = new CompraInternacionalFormFilter($filter_values);
		//$this->consulta = $this->filter->buildQuery($request->getParameter('cuenta_filters'));
        
        $filter_values = $request->getParameter('compra_internacional_filters');
		$this->filter = new CompraInternacionalFormFilter();
		$this->filter -> bind($filter_values);
		$this->consulta = $this->filter->buildQuery($this->filter->getValues());
        
		$this->compra_internacional_list = $this->consulta->execute();

		$this->setTemplate('index');
	}
	
  public function executeTransacciones(sfWebRequest $request) 
  {
  	$this->compra = Doctrine::getTable('CompraInternacional')->find(array($request->getParameter('id')));
    $this->forward404Unless($this->compra);
    	
    $this->transacciones = Doctrine::getTable('Transaccion')
    	->createQuery('t')
    	->where("t.compra_id = '".$this->compra->getId()."'")
    	->andWhere("t.modulo = 'CompraInternacional'")
    	->execute();
  }
  
	public function executeEnviar(sfWebRequest $request)
	{
		$this->compra_internacional = Doctrine::getTable('CompraInternacional')->find(array($request->getParameter('id')));
    	$this->forward404Unless($this->compra_internacional);
    	
    	$compra_internacional = $this->compra_internacional;
    	// recogemos la accion
    	$accion = $request->getParameter('accion');
    	
    	// Seteamos el estado segun la accion
    	if ($accion == 'enviar') {
			$this->compra_internacional->setEstado('Pendiente');
    	}
    	
		if ($accion == 'rechazar_internacional') {
			$this->compra_internacional->setEstado('Rechazada Internacional');
    	}
    	
		if ($accion == 'aprobar_internacional') {
			$this->compra_internacional->setEstado('Aprobada Internacional');
    	}
    	
		if ($accion == 'rechazar_finanzas') {
			$this->compra_internacional->setEstado('Rechazar Finanzas');
    	}
    	
		if ($accion == 'aprobar_finanzas') {
			$this->compra_internacional->setEstado('Aprobada Finanzas');
			
			$quitar = new Transaccion();
			$quitar->setCompraId($compra_internacional->getId());
			$quitar->setCuentaId($compra_internacional->getCuentaId());
			$quitar->setTipo('Egreso');
			$quitar->setModulo('CompraInternacional');
			$quitar->setMonto($compra_internacional->getTotal());
			$quitar->setGlosa($compra_internacional->getPer());
			$quitar->save();
			
			$dar = new Transaccion();
			$dar->setCompraId($compra_internacional->getId());
			$dar->setCuentaId($compra_internacional->getCuentaId());
			$dar->setTipo('Ingreso');
			$dar->setModulo('CompraInternacional');
			$dar->setMonto($compra_internacional->getTotal());
			$dar->setGlosa($compra_internacional->getPer());
			$dar->save();
			
    	}
    	
		if ($accion == 'fallar') {
			$this->compra_internacional->setEstado('Fallada');
    	}
    	
		if ($accion == 'recepcionar') {
			$this->compra_internacional->setEstado('Recepcionada');
    	}
    	
		if ($accion == 'entregar') {
			$this->compra_internacional->setEstado('Entregada');
    	}
    	

    	$this->compra_internacional->save();
    	// Generamos el Pdf
    	//$file = 'uploads/test.pdf';
    	$file = Dirsac::generarPdf($request->getParameter('id'));
    	
    	$correos = array(
    		'encargado' => $compra_internacional->getCorreoEncargado(),
    		'contacto'  => $compra_internacional->getCorreoContacto()
    	);
    	
    	// enviar correo
    	Dirsac::correo($accion, $file, $correos);
    	
    	// Volvemos al template
    	$this->setTemplate('show');
	}

/*
  public function executeEnviar(sfWebRequest $request)
  {
    $this->compra_internacional = Doctrine::getTable('CompraInternacional')->find(array($request->getParameter('id')));
    $this->forward404Unless($this->compra_internacional);
    
    // Cambiamos el estado
    $this->compra_internacional->enviar();
    
    // Generamos el Pdf
    $file = 'uploads/test.pdf';
    //$file = CompraInternacional::generarPdf($request->getParameter('id'));
    
    // Enviamos el correo
    $this->compra_internacional->correo('enviar', $file);
    
    
    // Volvemos al template
    $this->setTemplate('show');
  }
  */

  public function executeBorrador(sfWebRequest $request)
  {
    $this->compra_internacional_list = Doctrine::getTable('CompraInternacional')
      ->createQuery('a')
      ->where('a.estado = ?', 'Borrador')
      ->execute();
      
    $this->filter = new CompraInternacionalFormFilter();
    $this->setTemplate('index');
  }
  
  public function executeRecibida(sfWebRequest $request)
  {
    $this->compra_internacional_list = Doctrine::getTable('CompraInternacional')
      ->createQuery('a')
      ->where('a.estado = ?', 'Recibida')
      ->execute();
    $this->filter = new CompraInternacionalFormFilter();
    $this->setTemplate('index');
  }
  
  public function executeFallada(sfWebRequest $request)
  {
    $this->compra_internacional_list = Doctrine::getTable('CompraInternacional')
      ->createQuery('a')
      ->where('a.estado = ?', 'Fallada')
      ->execute();
    $this->filter = new CompraInternacionalFormFilter();
    $this->setTemplate('index');
  }
  
  public function executeEntregada(sfWebRequest $request)
  {
    $this->compra_internacional_list = Doctrine::getTable('CompraInternacional')
      ->createQuery('a')
      ->where('a.estado = ?', 'Entregada')
      ->execute();
    $this->filter = new CompraInternacionalFormFilter();
    $this->setTemplate('index');
  }
  
  public function executeAprobadaInternacional(sfWebRequest $request)
  {
    $this->compra_internacional_list = Doctrine::getTable('CompraInternacional')
      ->createQuery('a')
      //->where('a.estado = ?', 'Aprobada Finanzas')
      ->Where('a.estado = ?', 'Aprobada Internacional')
      ->execute();
    $this->filter = new CompraInternacionalFormFilter();
    $this->setTemplate('index');
  }
  
  public function executeAprobadaFinanzas(sfWebRequest $request)
  {
    $this->compra_internacional_list = Doctrine::getTable('CompraInternacional')
      ->createQuery('a')
      //->where('a.estado = ?', 'Aprobada Finanzas')
      ->Where('a.estado = ?', 'Aprobada Finanzas')
      ->execute();
    $this->filter = new CompraInternacionalFormFilter();
    $this->setTemplate('index');
  }
  
	public function executeRechazada(sfWebRequest $request)
	{
		$this->compra_internacional_list = Doctrine::getTable('CompraInternacional')
			->createQuery('a')
			->where('a.estado = ?', 'Rechazada por Internacional')
			->orWhere('a.estado = ?', 'Rechazada por Finanzas')
			->execute();
		$this->filter = new CompraInternacionalFormFilter();
		$this->setTemplate('index');
	}
  
  public function executeAprobarFinanzas(sfWebRequest $request)
  {
    $this->compra_internacional = Doctrine::getTable('CompraInternacional')->find(array($request->getParameter('id')));
    $this->forward404Unless($this->compra_internacional);
    
    $this->compra_internacional->aprobarFinanzas();
    
    $compra = Doctrine::getTable('CompraInternacional')->find($request->getParameter('id'));
    
    $transaccion = new Transaccion();
    $transaccion->setCuentaId($compra->getCuentaId());
    $transaccion->setCompraId($compra->getId());
    $transaccion->setModulo('CompraInternacional');
    $transaccion->setTipo('Egreso');
    $transaccion->setMonto($compra->getTotal());
    $transaccion->save();
    
    // Generamos el Pdf
    //$file = $this->compra_internacional->generarPdf($request->getParameter('id'));
    $file = 'uploads/test.pdf';
    
    // Enviamos el correo
    $this->compra_internacional->correo('aprobarFinanzas', $file);
    
    $this->setTemplate('show');
  }
  
  public function executeAprobarInternacional(sfWebRequest $request)
  {
    $this->compra_internacional = Doctrine::getTable('CompraInternacional')->find(array($request->getParameter('id')));
    $this->forward404Unless($this->compra_internacional);
    
    $this->compra_internacional->aprobarInternacional();
    
    $compra = Doctrine::getTable('CompraInternacional')->find($request->getParameter('id'));
    
    $transaccion = new Transaccion();
    $transaccion->setCuentaId($compra->getCuentaId());
    $transaccion->setCompraId($compra->getId());
    $transaccion->setModulo('CompraInternacional');
    $transaccion->setTipo('Egreso');
    $transaccion->setMonto($compra->getTotal());
    $transaccion->save();
    
    // Generamos el Pdf
    //$file = $this->compra_internacional->generarPdf($request->getParameter('id'));
    $file = 'uploads/test.pdf';
    
    // Enviamos el correo
    $this->compra_internacional->correo('aprobarInternacional', $file);
    
    $this->setTemplate('show');
  }

  public function executeRechazarFinanzas(sfWebRequest $request)
  {
    $this->compra_internacional = Doctrine::getTable('CompraInternacional')->find(array($request->getParameter('id')));
    $this->forward404Unless($this->compra_internacional);
    
    $this->compra_internacional->rechazarFinanzas();
    
    // Generamos el Pdf
    //$file = 'uploads/test.pdf';
    //$file = generarPdf($request->getParameter('id'));
    $file = 'uploads/test.pdf';
    
    // Enviamos el correo
    $this->compra_internacional->correo('rechazarFinanzas', $file);
    $this->setTemplate('show');
  }  

  public function executeRechazarInternacional(sfWebRequest $request)
  {
    $this->compra_internacional = Doctrine::getTable('CompraInternacional')->find(array($request->getParameter('id')));
    $this->forward404Unless($this->compra_internacional);
    
    $this->compra_internacional->rechazarInternacional();
    
    // Generamos el Pdf
    //$file = 'uploads/test.pdf';
    //$file = generarPdf($request->getParameter('id'));
    $file = 'uploads/test.pdf';
    
    // Enviamos el correo
    $this->compra_internacional->correo('rechazarInternacional', $file);
    $this->setTemplate('show');
  }  
	public function executeFallar(sfWebRequest $request)
	{
		$this->compra_internacional = Doctrine::getTable('CompraInternacional')->find(array($request->getParameter('id')));
		$this->forward404Unless($this->compra_internacional);
    
		$this->compra_internacional->fallar();
   
		//$file = generarPdf($request->getParameter('id'));
		$file = 'uploads/test.pdf';
    
    	//Enviamos el correo
		$this->compra_internacional->correo('fallar', $file);
		$this->setTemplate('show');
 	}   
  
	public function executeRecepcionar(sfWebRequest $request)
	{
		$this->compra_internacional = Doctrine::getTable('CompraInternacional')->find(array($request->getParameter('id')));
		$this->forward404Unless($this->compra_internacional);
    
		$this->compra_internacional->recepcionar();
   
		//$file = generarPdf($request->getParameter('id'));
		$file = 'uploads/test.pdf';
    
    	//Enviamos el correo
		$this->compra_internacional->correo('recepcionar', $file);
		$this->setTemplate('show');
 	} 
 	
 	public function executeEntregar(sfWebRequest $request)
	{
		$this->compra_internacional = Doctrine::getTable('CompraInternacional')->find(array($request->getParameter('id')));
		$this->forward404Unless($this->compra_internacional);
   
		if ($this->compra_internacional->getEstado() == 'Recepcionada') {
			
			$this->compra_internacional->entregar();
   
			//$file = generarPdf($request->getParameter('id'));
			$file = 'uploads/test.pdf';
    
	    	//	Enviamos el correo
			$this->compra_internacional->correo('fallar', $file);
			$this->setTemplate('show');
		}
 	} 
 	
  public function executeAdd(sfWebRequest $request){
      $this->forward404unless($request->isXmlHttpRequest());
      $number = intval($request->getParameter("num"));

      //$this->form = new EventForm();
      $this->form = new CompraInternacionalForm();

      $this->form->addNewFields($number);

      return $this->renderPartial('addNew',array('form' => $this->form, 'number' => $number));
    }

    public function executeNew(sfWebRequest $request){
      //$event = new Event();
      $compra = new CompraInternacional();
      $this->compra_internacional = $compra;
      //$this->form = new EventForm($event);
      $this->form = new CompraInternacionalForm($compra);

      $this->form->addNewFields(0);

      $this->setTemplate('new');
    }
    
	public function executeEdit(sfWebRequest $request)
	{		
		$this->forward404Unless($compra_internacional = Doctrine::getTable('CompraInternacional')->find($request->getParameter('id')), sprintf('Object compra_internacional does not exist (%s).', $request->getParameter('id')));
		$this->form = new CompraInternacionalForm($compra_internacional);
		$this->compra_internacional = $compra_internacional;
	}
	
	protected function processForm(sfWebRequest $request, sfForm $form)
	{
		$form->bind($request->getParameter($form->getName()), $request->getFiles($form->getName()));
		if ($form->isValid())
		{
			$compra_internacional = $form->save();
			
			$per = date('Y').'/'.$compra_internacional->getId();
			
			$compra_internacional->setPer($per);
			$compra_internacional->save();

			$this->redirect('compras/show?id='.$compra_internacional->getId());
		}
  }
	
}
